//
//  EYProtocol.h
//  metadata
//
//  Created by easy on 11-5-27.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <objc/objc-runtime.h> 
#import "EYProperty.h"
#import "EYMetadata.h"
@interface EYProtocol : NSObject {
	Protocol *own; 
}
@property (nonatomic, readonly) Protocol *ownProtocol; 
@property (nonatomic, readonly) NSString *name;

+(id) init:(Protocol *) protocol;
-(id) initWith:(Protocol *) protocol;
- (EYProperty *) propertyWithName:(NSString *) propertyName isRequiredProperty:(BOOL) req isInstanceProperty:(BOOL) ins;
//protocol_getMethodDescription
- (struct objc_method_description) methodDescription:(SEL) selector isRequiredMethod:(BOOL) req isInstanceMethod:(BOOL) ins;
//protocol_isEqual
+(BOOL) isEquals:(EYProtocol *) protocol1 to:(EYProtocol *) protocol2;
-(BOOL) isEquals:(EYProtocol *) protocol;

//protocol_conformsToProtocol
+(BOOL) conforms:(EYProtocol *) p1 to:(EYProtocol *) p2;
-(BOOL) conforms:(EYProtocol *) p;
//protocol_copyProtocolList
-(NSArray /*EYProtocol*/*) protocolList;
//protocol_copyPropertyList
-(NSArray /*EYProperty*/*) propertyList;
//protocol_copyMethodDescriptionList
-(struct objc_method_description *) methodDescriptionList :(BOOL)isRequiredProperty isInstanceProperty:(BOOL) ins outCount:(unsigned int) outCount;
@end
